package com.panlf.Thread基础;

import com.panlf.common.LogUtil;
import lombok.extern.slf4j.Slf4j;

import java.util.concurrent.Callable;
import java.util.concurrent.FutureTask;

/**
 * 新建线程
 * @author panlf
 * @since 2024/1/9 16:07
 */
public class 线程的创建方式 {
    /**
     * 默认会生成一个 main 线程
     *
     *
     * 1. 继承thread
     * 2. 实现Runnable
     * 3. FutureTask
     * @param args
     */
    public static void main(String[] args) {
        // 方式1
        Thread t1 = new Thread(() -> LogUtil.info("son thread"), "t1");
        t1.start();


        // 方式2
        new MyTask().start();


        // 适配器模式  让 Thread可以适配Callable
        // 方式3 (有返回值)
        Callable<String> callable = () -> {LogUtil.info("callable"); return "callable1";};
        FutureTask<String> futureTask = new FutureTask<>(callable);
        new Thread(futureTask).start();



    }

    static class MyTask extends Thread {

        @Override
        public void run() {
            LogUtil.info("t3");
        }
    }
}
